package lu.med.praxiswahl.wahlumed.client.tarif;

import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

import lu.med.praxiswahl.wahlumed.client.utilities.UniCode;
import lu.med.praxiswahl.wahlumed.client.wclient.Main;


/**
 * 
 * @author Lars Holger Roth
 */
public class TarifOptionsDialog extends JFrame implements ActionListener
{
    /**
     * 
     */
    private static final long serialVersionUID = 2365973873395779152L;
    private Main dataManager;
    private TarifTableModel model;
    private JTextField von, bis;

    public TarifOptionsDialog(Main dataManager)
    {
	super("Tarif Optionen");
	this.setAlwaysOnTop(true);
	this.setLayout(new BorderLayout());
	this.dataManager = dataManager;
	// Das Fenster enth�lt nur eine Tabelle mit den Tarifen
	// und eine Button Leise mit Ok und Abbrechen
	// Vor dem Aufruf der Optionen wird nocheinmal der aktuelle
	// Code abgefragt. Wird auf Abbrechen gelickt, so wird nochmal
	// der Code vom Server abgerfargt, bei Ok wird der neue Code
	// an den Server gesendet
	model = new TarifTableModel(dataManager);
	model.transferFromDatabase();
	TarifTable t = new TarifTable(model);
	JScrollPane sp = new JScrollPane(t);
	this.add(sp, BorderLayout.CENTER);

	JPanel bPanel = new JPanel();
	JButton cancelB = new JButton("Abbrechen");
	cancelB.addActionListener(this);
	JButton okB = new JButton("" + UniCode.getUE() + "bernehmen");
	okB.addActionListener(this);
	JButton addB = new JButton("Hinzuf" + UniCode.getue() + "gen");
	addB.addActionListener(this);
	JButton delB = new JButton("L" + UniCode.getoe() + "schen");
	delB.addActionListener(this);
	bPanel.add(addB);
	bPanel.add(delB);
	bPanel.add(okB);
	bPanel.add(cancelB);
	this.add(bPanel, BorderLayout.SOUTH);
	JPanel vbPanel = new JPanel(new GridLayout(1, 0));
	von = new JTextField();
	bis = new JTextField();
	von.setText(dataManager.getCodeDate().getfromDate());
	bis.setText(dataManager.getCodeDate().getToDate());
	vbPanel.add(new JLabel("G" + UniCode.getue() + "ltig von"));
	vbPanel.add(von);
	vbPanel.add(new JLabel("bis"));
	vbPanel.add(bis);
	this.add(vbPanel, BorderLayout.NORTH);

	this.pack();
	this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {
	if (e.getActionCommand().equals("Abbrechen"))
	{
	    this.setVisible(false);
	}
	if (e.getActionCommand().equals("" + UniCode.getUE() + "bernehmen"))
	{
	    model.transferToDatabase();
	    /*
	     * dataManager.getCodeDate().setFromDate(von.getText());
	     * dataManager.getCodeDate().setToDate(bis.getText());
	     */
	    dataManager.getCodeDate().createCodeRateInterval(von.getText(),
		    bis.getText());
	    this.setVisible(false);
	}
	if (e.getActionCommand().equals("Hinzuf" + UniCode.getue() + "gen"))
	{
	    String input = JOptionPane
		    .showInputDialog(this, "Geben Sie den Code ein:");
	    if (input == null)
	    {
		return;
	    }
	    else
	    {

		if (input.equals(""))
		{
		    JOptionPane
			    .showMessageDialog(dataManager,
				    "Sie haben keinen Code angegeben.\nDer Vorgang wird abgebrochen.");
		    return;
		}
		model.addLine(input);
		// dataManager.getCodeTarifContext().createCodeRate("l2", "",
		// 0.0d,
		// 0.0d);
	    }
	}
	if (e.getActionCommand().equals("L" + UniCode.getoe() + "schen"))
	{
	    model.deleteCurLine();
	}
    }

    @Override
    public void setVisible(boolean in)
    {
	super.setVisible(in);
	this.setExtendedState(Frame.MAXIMIZED_BOTH);
    }

}
